package edu.siu.math.egut.egut;

import java.io.Serializable;



/**
 * Used to represent the LiE types that egut understands 
 * 
 * @author Joe Pleso
 *
 */
public enum LiEType implements Serializable {

 
    
    
    /**
     * Used for arbitrary sized ints from LiE
     */
    INT("int", LiEInteger.class.getConstructors()),
    
    /**
     * Used for vectors of signed 32 bit ints  
     */
    VEC("vec", edu.siu.math.egut.egut.LiEVector.class.getConstructors()),
    
    /**
     * used for matrices of signed 32 bit ints
     */
    MAT("mat", edu.siu.math.egut.egut.LiEMatrix.class.getConstructors()),
    
    /**
     * used to represent a group in LiE
     */
    GRP("grp", edu.siu.math.egut.egut.LiEGroup.class.getConstructors()),
    
    /*
     * used to represent a polynomial in LiE
     *
    POL("pol"),*/
    
    /**
     * used to represent strings in LiE
     */
    TEX("tex", LiEText.class.getConstructors());

    private  final String name;
    private final java.lang.reflect.Constructor<?>[] constructor;
    LiEType (String name, 
	    java.lang.reflect.Constructor<?>[] clazz){
	this.name = name;
	this.constructor = clazz;
    }
    /**
     * Returns the string representation of this LiE type.
     * 
     * @return the string representation of this  LiE type.
     */
    public String getName (){
	return name;
    }
    
    /**
     * Returns the class associated with the LiEObject.
     * 
     * @return the set of constructors for the LiEObject
     */
    public java.lang.reflect.Constructor<?>[] getConstructors(){
	return constructor;
    }
    
}
